package com.gaofei.hr.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author : gaofee
 * @date : 10:52 2021/5/27
 * @码云地址 : https://gitee.com/itgaofee
 */
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private RedisTemplate redisTemplate;


    /**
     * 1.服务器拿到表单数据
     * 利用redis的setnx命令来验证是否重复提交的表单?怎么验证的
     * 一.利用表单数据生成一个能够代表本次提交的唯一id如:key:username+tel,value:随意
     * 二.int flag = setnx(key,value)设置过期时间
     * 三.如果flag=1 ,说明第一次提交,正常保存到数据库,否则不做任何操作
     * 四.保存成功之后,删除掉reids的key
     * @param username
     * @param password
     * @param phone
     * @return
     */
    @RequestMapping("register")
    public Object register(String username,String password,String phone){
        String formId = username+phone;//这里随意组合,但是必须代表该请求表单的唯一标识
        //如果是true,保存success ,失败false
        Boolean flag = redisTemplate.opsForValue().setIfAbsent(formId, "gaofei");
        System.out.println(flag+">>>>>>>>>>>>>>>>>>");
        if(flag){
            //将表单数据正常保存数据库,
            System.out.println("正常保存了数据库!!!!!!");
            System.out.println(username+"="+password+"="+phone);
            //保存成功后删除redis的数据
            redisTemplate.delete(formId);

            return "save success";
        }
            ///不做任何操作
            System.out.println("重复提交了");

        return "重复提交了";
    }
}
